JESD B5.1 EMMC协议介绍(六) 您所在的位置:网站首页 emmc busy JESD B5.1 EMMC协议介绍(六)

JESD B5.1 EMMC协议介绍(六)

#JESD B5.1 EMMC协议介绍(六)| 来源: 网络整理| 查看: 265

当EMMC 进入stand-by 模式后,CMD信号线和data信号线以推挽模式进行数据传输。同时fpp时钟频率保持在fod直到EMMC的csd 寄存器被host 获取。紧接着host 会下发CMD9(SEND_CSD)获取CSD寄存器中的指定数据。

图27 EMMC 状态转换图(数据传输模式)

EMMC中通过CMD4(SET_DSR) 配置驱动端的传输命令。具体指会设置DSR寄存器的总线长度以及数据传输频率,同时时钟频率会从fod 切换到fpp。

当EMMC处于stn-by模式时,host下发参数为EMMC相对地址的CMD7命令用于选择对应的EMMC并将其切换到数据传输状态。

如果EMMC先前被选中并处于传输状态,则它与host的连接将被释放,并且当CMD7取消选择时,它将回到stand-by状态,参数中的只存在地址都不等于EMMC自身的相对地址。 当参数为预留相对设备地址“0x0000”的CMD7 命令发送后,EMMC将会回到stand-by 模式,当EMMC处于传输状态时,接收到带有EMMC自身相对地址的CMD7命令会被忽略,且有可能被视为是非法命令。

所有host和带有RCA的EMMC在数据传输模式以点对点的方式进行通信,所有的地址命令通过CMD信号线被识别并响应。

见图27,总结了多数据之间传输模式的关系。

host 下发CMD12命令后,所有的读数据命令都被禁止,数据传输终止,且EMMC切换到stand-by 状态,读命令比如:CMD17(读block),CMD18(读取多个block),CMD21(发送tunning block),CMD30 (发送写保护命令)

host下发CMD12命令后,所有的写数据命令被终止,接着CMD7 命令断开EMMC和host 的通信,写命令比如:CMD24 CMD25,CMD26(写CID) 以及CMD27(写CSD寄存器命令)

一旦数据传输完成后,EMMC将会退出写入数据状态,切换到编程状态或者数据传输状态(数据传输失败的时候)

如果块写入操作被停止,同时最后一个块的长度和CRC有效,则将对写入数据进行存储。

EMMC 中,对写入的block提供了缓存,意味着上一个块在存储的时候可以写入下一个块。

然而当写入CSD寄存器以及CID 寄存器,写保护或者擦除的时候,是不会提供缓存的,意味着当EMMC处于busy 状态时,CMD信号线上是没有命令传输的,此时当EMMC处于busy或者编程状态时候,data0 信号线将被拉低。

当EMMC 处于编程状态时 ,参数设置命令比如CMD16(设置block长度),CMD35-36(擦除选择的group)

是不允许生效的。且读命令也不允许生效。

当使用CMD7 命令切换另一个EMMC从stand-by状态到传输状态时候,将会终止对数据的编程操作,此时EMMC 将切换自身为断开状态,并释放data0 信号线。

再次使用CMD7 命令将会保持host与EMMC的通信,这种情况下天,EMMC 将会从切换到编程状态,并重新声明busy 标志符

当(CMD0,CMD15,或者硬件复位EMMC)复位或者上电异常将会导致任何挂起或者编程生效的操作。

如果EMMC没有开启可靠性编程这一功能,以上操作将会导致寻址操作中的局部或者全部数据处于未知状态,host 必须为此担责。

在使用(CMD19,CMD14)命令执行总线测试过程之前,需要设置数据传输的时钟频率。通过这种方式,总线测试能够给出实际的结果,如果总线测试程序以低于数据传输频率的时钟频率运行,得到的结果不一定是真实的。

这些命令如用于总线测试的命令(CMD14,CMD19),加解锁命令(CMD42),设置block长度命令(CMD16)在EMMC使用双倍速率模式传输的情况下是不能够生效的,同时这些命令应被视为非法命令不该被执行。

在以下格式定义中,所有大写标志和参数在CSD寄存器(见7.3章节)中定义,其他状态标志在设备状态(见6.13章节)中定义。

6.6.1 命令集合和扩展设置

默认情况下,上电后或者使用参数为0x00000000的CMD0 命令复位亦或者boot 操作后,EMMC 在给定的命令集合中工作。在EMMC 的标准命令集合中,使用DATA0 信号线。同时host可以下发命令集合中的CMD6 命令选择需要的访问模式进行指挥EMMC 工作。

EXT_CSD寄存器中定义了支持的命令集以及当前选择的命令集,EXT_CSD寄存器分为两部分,即属性段和模式段。属性段包含有关设备功能的信息。模式部分反映EMMC的当前选择的模式。

host 通过下发SEND_EXT_CSD 命令来读取ext_csd寄存器的值时,EMMC将发送ext_csf 寄存器中的512bytes 数据作为响应。保留的字段或者只写的字段,使用0进行填充。host也可以发下switch 命令并设置其中一种访问模式,并将其写入ext_csd寄存器的模式段,所有三种模式都访问和修改EXT_CSD字节中的一个字节,即索引字段所指向的字节。

注:“索引”字段可以包含0–255之间的任何值,但只有0–191为有效值。如果索引值在192-255范围内,则EMMC不会执行任何修改,并设置SWITCH_ERROR 状态位。

switch 命令既可以写入ext_csd 寄存器,又可以改变命令集合。如果该命令的作用是改变命令集合那么索引和值字段将会被忽略,ext_csd 寄存器将不会被写入,如过switch 命令用来对ext_csd 寄存器写入的话,命令集合区域被忽略,同时命令集合保持不变。

switch 命令的使用R1b 作为响应,因此当busy 标志解除后,host 使用send_status 命令读取EMMC 状态,从而检查switch操作的结果。

6.6.2 高速模式选择

如果host 想要让EMMC 保持在26MHz的时钟频率,应该切换时钟模式到EMMC所支持的高速时钟模式:即频率在26MHz到52MHz的高速时钟,其中High Speed的时钟频率范围为0MHz到52MHz,HS200和HS400的时钟频率为0MHz到200MHz, 见表4.

注:当实际的时序改变时,由于异步操作,无法保证发送的任何命令(如CMD13)的之后的EMMC行为。因此,不建议使用CMD13来检查定时改变指示的繁忙完成。如果使用CMD13,host必须忽略CRC错误(如果出现CRC错误)。以下部分详细描述了模式选择。

6.6.2.1 高速模式选择

自V4.0标准之后,host 需要设置高速模式才能切换时钟频率为26MH至52MHz的范围。表A.222对EMMC 上电或者软复位之后的时钟频率进行了设置。

host需要先设置高速接口时序,才能切换为更高的时钟频率。host 需要使用switch命令对ext_csd 寄存器的HS_TIMING字段写入0x01, 7.4.65 章节定义了ext_csd 寄存器中的有效值。如果host 写入了错误的值,则HS_TIMING 字段不会改变,同时switch_error 位将会报错。

6.6.2.2 HS200 时序模式选择

HS200 在VCCQ为1V8 或者1V2时有效。且该模式下的总线位宽为4bit 单倍速率传输或者8bit 单倍速率

当host 对EMMC 初始化后,将会通过读取ext_csd寄存器的device_type字段验证EMMC是否支持HS200模式。

接着可能通过选择HS200模式,从而切换时钟频率超过52MHz。

上电或通过CMD0进行软件复位之后,接口时钟频率将会被设置为默认的后台兼容时序,在必要的情况下,选择执行tuning 操作,并选择HS200模式。

以下是host 切换为HS200需要操作的步骤:

1)通过下发CMD7 命令选择合适的EMMC,通过CMD42 命令查看EMMC 是否处于锁着的状态,

2)通过读取ext_csd 寄存器的第196字段DEVICE_TYPE 验证EMMC 是否在适用于主机和设备的IO电压下支持HS200 模式

3)读取ext_csd寄存器的第197字段DRIVE_STRENGTH字段,寻找EMMC 支持的IO口驱动等级(注:如果没必要改变驱动力的话,这一步可以跳过)

4) 通过host下发CMD6命令,在ext_csd 寄存器的第185字段设置HS200 模式和驱动等级,如果host 写入的值无效,则HS_TIMING 字段不会改变,HS200 时序不会发生改变,且驱动力也不会改变,同时SWITCH_ERROR位会置位,在EMMC 发出R1 响应期间,会设置busy 标志位。一旦busy 标志位取消后,host收到可以传输数据通知信息且没有报错信息(没有报错信息意味着EMMC完成设置HS200模式和驱动强度参数),在HS200时钟频率下发出CMD13(SEND_STATUS)

5) 此时,host 可以设置小于200MHz 的时钟频率

6)见6.6.5章节,host 通过下发CMD21 命令设置HS200 tuning 过程。

注意:在开始tuning操作之前,host需要设置好对应的总线宽度便于EMMC 在合适的情况下进行tuning。

图28 执行HS200的流程图

6.6.2.3 HS400 时序模式选择

HS400工作在VCCQ为1V8或者1V2的IO电压下

HS400 模式下,总线宽度设置为8线双倍速率模式

HS400 支持与DDR52 相同的命令

当host 对EMMC 完成初始化之后,host 通过读取ext_csd 寄存器的DEVICE_TYPE 字段来查看EMMC 是否支持HS400 模式,接着会在改变时钟频率大于52MHz 这一步之前于EMMC 中使能HS400 模式。

当EMMC上电或者使用CMD0 软复位之后,类似于HS200,时序接口将设置为后台兼容模式

hsot 通过以下流程切换到HS400 模式



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有